function formator(data) {
    var dataStr = ""
    Object.keys(data).forEach(key => {
        dataStr += key + '=' + data[key] + '&';
    })
    if (dataStr !== '') {
        dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
    }
    return dataStr;
}

async function ajax(url = '', data = {}, type = 'GET') {
    // get请求
    if (type == 'GET') {
        var dataStr = formator(data)
        url = url + '?' + dataStr;
    }
    // get配置信息
    let requestConfig = {
        method: type,
        headers: {
            "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
        }
    }
    // post请求
    if (type == 'POST') {
        // 拦截对象，为对象添加新属性
        // Object.defineProperty() 方法会直接在一个对象上定义一个新属性，或者修改一个对象的现有属性，并返回此对象。   Object.defineProperty(obj, prop, descriptor)
        Object.defineProperty(requestConfig, 'body', {        //requestConfig.body=formaformator(data)
            value: formator(data)
        })
    }

    let response = await fetch(url, requestConfig);
    let responseJson = await response.json();
    return responseJson
}


// 使用封装的fetch
// post使用
// ajax("http://iwenwiki.com/api/blueberrypai/login.php", {
//   user_id: "iwen@qq.com",
//   password: "iwen123",
//   verification_code: "crfvw"
// },"POST").then(data =>{
//   console.log(data);
// })

// get使用
// ajax("http://iwenwiki.com/api/generator/list.php").then(data =>{
//   console.log(data);
// })

